home *** CD-ROM | disk | FTP | other *** search
/ The 640 MEG Shareware Studio 2 / The 640 Meg Shareware Studio CD-ROM Volume II (Data Express)(1993).ISO / 4dos / 4utilsf.zip / GLOBALS.PAS < prev    next >
Pascal/Delphi Source File  |  1992-12-10  |  4KB  |  135 lines

  1. UNIT Globals;
  2. {$D-}
  3. (* ----------------------------------------------------------------------
  4.    Part of 4FF   - 4DOS File Finder
  5.  
  6.    (c) 1992 Copyright by David Frey,
  7.                          Urdorferstrasse 30
  8.                          8952 Schlieren ZH
  9.                          Switzerland
  10.  
  11.    DISCLAIMER: This unit is freeware: you are allowed to use, copy
  12.                and change it free of charge, but you may not sell or hire
  13.                this part of 4DESC. The copyright remains in our hands.
  14.  
  15.                If you make any (considerable) changes to the source code,
  16.                please let us know. (send a copy or a listing).
  17.                We would like to see what you have done.
  18.  
  19.                We, David Frey and Tom Bowden, the authors, provide absolutely
  20.                no warranty of any kind. The user of this software takes the
  21.                entire risk of damages, failures, data losses or other
  22.                incidents.
  23.  
  24.  
  25.        Code created using Turbo Pascal 6.0 (c) Borland International 1990
  26.  
  27.    This unit provides the string handling and the date/time handling.
  28.  
  29.    ----------------------------------------------------------------------- *)
  30.  
  31. INTERFACE USES Dos, StringDateHandling;
  32.  
  33. CONST MaxComments       = 1024;
  34.       MaxFileSpecs      =    6;
  35.       DescLen           =   50;
  36.  
  37. TYPE  DescStr           = STRING[DescLen];
  38.       DescArrayType     = ARRAY[1..MaxComments]  OF DescStr;
  39.       NameExtStr        = STRING[8+1+3];
  40.       FileSpecArrayType = ARRAY[1..MaxFileSpecs] OF NameExtStr;
  41.  
  42. (* command line flags: *)
  43.  
  44. VAR   ExactAttr                : BOOLEAN;
  45.       DoScanLZHArchives        : BOOLEAN;
  46.       DoScanZIPArchives        : BOOLEAN;
  47.       SubDirectories, AllDrives: BOOLEAN;
  48.       BareOutput               : BOOLEAN;
  49.       Drive                    : CHAR;
  50.  
  51. (* Global variables *)
  52.  
  53. VAR   Attr                     : BYTE;
  54.       DirSize,   TotalSize     : LONGINT;
  55.       FileCount, TotalFileCount: WORD;
  56.  
  57. VAR   FileName                 : NameExtStr;
  58.       Search                   : SearchRec;
  59.       Path                     : PathStr;
  60.       Name                     : NameStr;
  61.       Dir                      : DirStr;
  62.       Ext                      : ExtStr;
  63.  
  64. VAR   InfoArray                : ARRAY[0..5] OF LONGINT;
  65.       AttrStr, FileStr, SizeStr: STRING;
  66.       Date                     : DateStr;
  67.       Time                     : TimeStr;
  68.       DateRec                  : DateTime;
  69.  
  70. VAR   csize                    : LONGINT;    (* compressed size *)
  71.       fstamp                   : DateTime;   (* last mod file date/time (turbo format) *)
  72.       s                        : STRING;
  73.  
  74. (* Templates for FormatStr *)
  75.  
  76. VAR   DateTempl : STRING[4];
  77.       TimeTempl : STRING[4];
  78.       DescTempl : STRING[5];
  79.  
  80. VAR   MaxViewLength: BYTE;
  81.  
  82. (* Buffer related  variables: *)
  83.  
  84. CONST MaxBufSize = 65500;
  85.  
  86. TYPE  PBuffer = ^TBuffer;
  87.       TBuffer = ARRAY[0..MaxBufSize] OF BYTE;
  88.  
  89. VAR   BufPtr    : LONGINT;
  90.       BytesRead : WORD;
  91.       BufSize   : WORD;
  92.       FilePtr   : LONGINT;
  93.  
  94. VAR   Buffer    : PBuffer;
  95.  
  96. PROCEDURE InstallLZHBuffer;
  97. PROCEDURE FreeLZHBuffer;
  98. FUNCTION  ReadByte: BYTE;
  99.  
  100. IMPLEMENTATION
  101.  
  102. PROCEDURE InstallLZHBuffer;
  103.  
  104. BEGIN
  105.  IF MaxAvail < MaxBufSize THEN BufSize:= WORD(MaxAvail)
  106.                           ELSE BufSize:= MaxBufSize;
  107.  
  108.  GetMem(Buffer,BufSize);
  109.  IF Buffer = NIL THEN
  110.   BEGIN
  111.    WriteLn(Output);
  112.    WriteLn(Output,'Fatal Error : Unable to allocate Buffer!');
  113.    HALT(255);
  114.   END;
  115. END; (* InstallLZHBuffer *)
  116.  
  117. PROCEDURE FreeLZHBuffer;
  118.  
  119. BEGIN
  120.  FreeMem(Buffer,BufSize);
  121. END; (* FreeLZHBuffer *)
  122.  
  123. FUNCTION ReadByte: BYTE;
  124.  
  125. BEGIN
  126.  ReadByte := Buffer^[BufPtr]; INC(BufPtr); INC(FilePtr);
  127. END; (* ReadByte *)
  128.  
  129.  
  130. BEGIN
  131.  Str(Length(DateFormat),DateTempl); DateTempl := '%'+DateTempl+'s';
  132.  Str(Length(TimeFormat),TimeTempl); TimeTempl := '%'+TimeTempl+'s';
  133.  MaxViewLength := 80-33-Length(DateFormat)-Length(TimeFormat);
  134.  Str(MaxViewLength,DescTempl);      DescTempl := '%-'+DescTempl+'s';
  135. END.